Das Document Object Model (DOM, engl. für Dokumenten-Objekt-Modell) ist eine Spezifikation einer Programmierschnittstelle, welche HTML- oder XML-Dokumente als eine Baumstruktur darstellt, in der jeder Knoten ein Objekt ist, welches einen Teil des Dokumentes repräsentiert, z. B. einen Absatz, eine Überschrift, ein Video oder etwa eine Tabellenzelle. Die Schnittstelle ist plattform- und programmiersprachenunabhängig und erlaubt damit standardisiert, die Struktur und das Layout eines Dokumentes zu verändern. Im Webbrowser bildet dies einen wichtigen Baustein für dynamische Webseiten.
Das DOM wurde ursprünglich vom World Wide Web Consortium spezifiziert, heutzutage ist die autoritative Quelle die WHATWG. Den Veränderungen in der Standardisierung liegt zugrunde, dass Standards oftmals nachträglich definiert wurden, während Webbrowser bereits Implementierungen enthielten.
Seit dem Ende der sogenannten Browser-Wars hat sich der Ansatz etabliert, die Standardisierung in offiziellen Dokumenten und die Implementierung in verbreiteten Web-Browsern zu parallelisieren, in der Praxis also die endgültige Standardisierung der Implementierung nachzuordnen.
Eine Implementierung, die der DOM-Spezifikation genügt, besteht im Sinne der objektorientierten Programmierung aus einem Satz von Klassen zusammen mit deren Methoden und Attributen, wobei es eine Dualität zwischen Attributen in serialisierten Dokumenten und Eigenschaften im DOM gibt. Dies nennt sich auch "Attribute reflection"[1].